Computers often perform copy operations to copy a portion of data from one storage device to another storage device. For example, computers may perform copy operations for back up, storage or any other tasks. Computers often include a host device and one or more input/output (I/O) devices. For example, a computer may include one or more I/O adapter devices for communicating with the storage devices.
Typically, a host processor in the host device may perform a copy operation to copy a data block from a first storage device to a second storage device. In some instances, the host processor may communicate with an I/O adapter device using a Peripheral Component Interconnect Express (PCIe) interface for reading the data from a storage device or storing the data in a storage device. For example, the host processor may read the data block to be copied from the first storage device via the PCIe interface and store it in a host memory. The host processor may then read the data block from the host memory and write it into the second storage device via the PCIe interface. Moving the data over the PCIe bus may consume lot of resources, e.g., host memory bandwidth and as well as the bandwidth between the host device and the I/O adapter device, which can slow down the performance of the host processor for other important tasks thus reducing the throughput of the system.